[#1316] Remove all airdrop code + teardown migration#1319
Conversation
Removes the entire airdrop subsystem in one cohesive change while keeping all core features working: - Delete airdrop API routes, frontend pages/components, lib/airdrop, crons - Remove fire-and-forget award call sites (ratings, index/storyline, backfill) - Drop referral hooks/components; simplify ShareButtons to plain story URL - Remove airdrop sections from privacy/terms; NavBar commented link - Delete contracts/ (Foundry), foundry.toml, docs/airdrop-contracts.md - Remove airdrop-only packages (siwe, merkle-tree, pglite, nanoid) - Strip 8 pl_* table types from lib/supabase.ts; clean stale .gitignore lines - Add migration 00042_airdrop_teardown.sql (NOT applied; operator applies in #1317) Safety: keeps TWITTERAPI_IO_KEY + lib/x-stats.ts, backfill cron, and all story/ratings/profile/sharing features. Version bump 1.41.4 -> 1.42.0. Closes #1316 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
project7-interns
left a comment
There was a problem hiding this comment.
Verdict: REQUEST CHANGES
Summary
The teardown scope is broadly aligned with #1316: the airdrop/referral code paths, crons, packages, and migration are removed/added as requested. However, the PR cannot be approved while required CI is red.
Findings
- [blocking] Required GitHub checks are failing for this PR.
- File:
CI / PR #1319 - Details:
lint-and-typecheckande2eboth failed on Actions run 26568645986. This violates the issue acceptance criteria requiringnpm run lint && npm run buildto pass and the reviewer checklist requirement that the build pass. - Suggestion: Fix the failing CI jobs or push the missing verification fix, then ping reviewers for re-review once checks are green.
- File:
Decision
Requesting changes until CI is green. The code-level teardown/reference sweeps I checked against the PR tree did not show remaining airdrop/referral/package references.
Review: @re2 — REQUEST CHANGESCode is correct and complete. Verified against PR head 11abf4c — every acceptance criterion in #1316 is met:
Blocker — CI is red on
|
CI runs Node 20 / npm 10, but the lock was first regenerated in this sandbox under npm 11 (Node 24), which pruned optional utf-8-validate entries that npm 10 expects — causing `npm ci` to fail with "Missing: utf-8-validate@5.0.10 from lock file". Regenerated the lock with npm 10.8.2 (matching CI). Verified `npm ci`, lint, typecheck, test (62/62), and build all pass under Node 20. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
project7-interns
left a comment
There was a problem hiding this comment.
Verdict: APPROVE
Summary
Re-review confirms the CI blocker is fixed. The second commit only restores npm-10-compatible optional lockfile entries, and the airdrop teardown remains aligned with #1316.
Findings
- None.
Decision
Approving. lint-and-typecheck and e2e are green on Actions run 26569051000; PR-tree sweeps are clean for airdrop/referral/package leftovers; backfill cron, lib/x-stats.ts/TWITTERAPI_IO_KEY, plain story share URLs, and migration 00042_airdrop_teardown.sql match the acceptance criteria.
Re-review: @re2 — APPROVEDCI is now green ( Verified:
|
Summary
Removes the entire airdrop subsystem in one cohesive PR while keeping every core feature working (story pages, ratings, on-chain indexing,
backfillcron, x-stats, profiles, sharing).This is the CODE portion of the teardown epic #1315. The DB migration is committed but not applied — the operator applies it in #1317.
Changes (per issue spec A1–A13)
src/app/api/airdrop/(16 route dirs + tests)src/app/airdrop/+src/components/airdrop/; removedStorylineSprintBannerfrom the story pageawardX(...)calls inratings,index/storyline,cron/backfill; deletedlib/airdrop/(incl.twitterapi.ts)useReferralCode/useReferralCapture/ReferralInput/ReferralCapture;ShareButtonsnow yields a plain${appUrl}/story/${id}URLairdrop-points/airdrop-price/airdrop-weekly;vercel.jsonkeepsbackfill(*/5)privacy/terms(Section 12 removed, following sections renumbered)contracts/+foundry.toml+docs/airdrop-contracts.md; cleaned stale.gitignoreFoundry/doc linessiwe,@openzeppelin/merkle-tree,@electric-sql/pglite,nanoidpl_*table blocks + theirPl*aliases fromlib/supabase.tssupabase/migrations/00042_airdrop_teardown.sql(NOT applied)1.41.4 → 1.42.0Safety invariants honored
TWITTERAPI_IO_KEY+lib/x-stats.ts(only deletedlib/airdrop/twitterapi.ts)backfillcron; airdrop crons goneVerification
npm run lint— clean (after removing leftover untracked Foundrycontracts/{out,cache,lib}build artifacts from disk)npm run typecheck— cleannpm run build— succeeds; no/airdropor/api/airdrop/*routes; core routes presentnpx vitest run— 62/62 passlib/airdrop|components/airdrop|api/airdrop, referral identifiers, removed packages, and broadAirdrop|airdrop|Sprint(src/lib/scripts)Test plan
/story/{id}, ratings submit, profile + x-stats load00042is present and NOT applied to prodOut of scope (operator follow-up)
Closes #1316
🤖 Generated with Claude Code